/* 项目公共方法js */

export default {
	
	// ========================================================= 将图片转换为base64 (异步)
	"imageToBase64": function (objC){
		// 传递对象参数重构
		var objMo = Object.assign({
			src: '', // 图片src属性值
			errToast: true, // 是否提示错误
		}, objC);
		var this_obj = uni.$focus.objCopy(objMo);
		
		// 获取图片信息
		uni.getImageInfo({
			src: this_obj.src,
			fail: err => {
				// 错误信息提示
				if (this_obj.errToast) {
					uni.showToast({ title: '不支持的图片资源', icon: 'none', duration: 2500 });
				}
				// 错误回调
				if (objC.fail) { objC.fail(); }
			},
			success: (imgInfo) => {
				// 获取全局唯一的文件管理器
				var manager_file = wx.getFileSystemManager();
				// 读取本地文件内容
				manager_file.readFile({
					filePath: imgInfo.path, // 要读取的文件的路径 (本地路径)
					encoding: 'base64', // 指定读取文件的字符编码
					fail: err1 => {
						// 错误信息提示
						if (this_obj.errToast) {
							uni.showToast({ title: '图片无法读取', icon: 'none', duration: 2500 });
						}
						// 错误回调
						if (objC.fail) { objC.fail(); }
					},
					success: (res) => {
						// 编码字符串去掉“回车”“空格”字符
						var str_base64Data = res.data ? res.data.replace(/[\r\n]/g, "") : '';
						// 返回数据封装
						var data_back = {
							src: 'data:image/jpg;base64,' + str_base64Data,
							data: str_base64Data
						};
						// 数据回调
						if (objC.success) { objC.success(data_back); }
						
					},
				});
				
			}
		});
		
	},
	
	// ========================================================= 自定义拍照 (异步)
	"cameraCustom": function (objC){
		// 传递对象参数重构
		var objMo = Object.assign({
			type: 'portrait', // 拍照类型： none-无拍照蒙层  portrait-头像拍照  IDCard-身份证拍照
			size: 'middle', // 生成图片尺寸： low-小尺寸  middle-中等尺寸  high-大尺寸
			album: false, // 是否开启相册选图
		}, objC);
		var this_obj = uni.$focus.objCopy(objMo);
		
		// emit全局事件监听
		uni.$once("page_other_cameraCustom_photo_back", (dataD) => {
			// 因为页面可能正在回退动画中，所以延时执行回调
			setTimeout(()=>{
				// 拍照成功，触发回调
				if (objC.success) { 
					objC.success(dataD,objC.type); 
				}
			}, 400);
			
		});
		
		// 跳转到自定义拍照页面
		uni.$focus.pageJump('/pages/other/camera-custom/index', this_obj);
	},
	
	// ========================================================= 裁剪身份证照片 (异步)
	"cutterIDCard": function (objC){
		// 传递对象参数重构
		var objMo = Object.assign({
			src: '', // 要裁剪的图片src属性
		}, objC);
		var this_obj = JSON.parse(JSON.stringify(objMo));
		
		// 临时变量保存
		var isSave = uni.$focus.varShortTime('set', {
			"page_other_imageCutter_options_src": this_obj.src,
		});
		
		// 如果保存成功
		if (isSave){
			// emit全局事件监听
			uni.$once("page_other_imageCutter_cutter_back", (dataD) => {
				// 因为页面可能正在回退动画中，所以延时执行回调
				setTimeout(()=>{
					// 裁剪成功，触发回调
					if (objC.success) { objC.success(dataD); }
				}, 1000);
			});
			
			// 跳转到自定义拍照页面
			uni.$focus.pageJump('/pages/other/cutter-idcard/index',{type:objC.type});
		}
	},
	
	'imgCompress': function(src) {
		  let _this = this;
		  return new Promise((resolve, reject) => {
		    uni.showLoading({
		        title: '压缩中...',
		        icon: 'none'
		    });
		    uni.getImageInfo({
		        src: src,
		        success(res) {
					let canvasWidth = res.width; //图片原始长宽
					let canvasHeight = res.height;
					let img = new Image();
					img.src = res.path;
					let canvas = document.createElement('canvas');
					let ctx = canvas.getContext('2d');
					canvas.width = canvasWidth / 2;
					canvas.height = canvasHeight / 2;
					ctx.drawImage(img, 0, 0, canvasWidth / 2, canvasHeight / 2);
					canvas.toBlob(function(fileSrc) {
					let imgSrc = window.URL.createObjectURL(fileSrc);
					resolve(imgSrc);
					uni.hideLoading();
					});
				}
		        });
		  })
	}
	
};